約 3,096,300 件
https://w.atwiki.jp/tenj/pages/1640.html
「武技」とは、冒険の中で覚える事が出来る、必殺技のようなものです。 この武技を使いこなせれば、戦闘はさらに有利にすすむでしょう。 ここでは武技の使用方法を確認します。 武技の使用方法 1)武技ウィンドウの確認: 「武技ウィンドウ」にて習得している武技を確認します。 ①武技アイコン あなたが習得した武技のアイコンです。各武技のヘルプを見るためには、武技をクリックする事で見る事が出来ます。 ②武技ヘルプ 武技の情報をこちらで確認する事が出来ます。 ③武技設定 あなたが習得した武技を設定する場所です。 2)武技のセット: 習得している「武技」の中から使用したいものを ドラッグして「武技設定欄」にもっていきます。 ダブルクリックするだけでもセットできます。 これで「武技」がセットされました。 ※ 武技設定にあるAlt+1~3は、ショートカットと なります。 それぞれに設定した武技の組み合わせ に変更したい場合、このキーを押す事で 武技の 設定を変更する事ができます。 3)右下の武技ウィンドウにてF2、F3、F4キーを押しておけば武技がセットされ、 自動的に発動されます。 ※一部の武技(攻撃武技)は使用したいときに右クリックを押す事で発動します。 ※気力が足りないときは武技が使えません。 ※非戦闘時であれば、体力・気力は少しずつ自動的に回復します。 ボタンを押すことで自動発動 コメント 名前 コメント
https://w.atwiki.jp/shiori_yuhna-se/pages/15.html
結奈たんの秘密 Second Edition (嘘)に図説あり。 ・さおり使用方法 最終的には、さおりのDLLファイルを入れるだけで認識する予定ですが、今のところは・・・ ghost\masterフォルダに、「saori.txt」を作る。 1行ごとに、「(ID),(DLLファイル名),(staticまたはdynamic)」の書式でDLLファイルを書く。 staticだと結奈起動時にロード、dynamicだとさおりを呼び出す度にロードします。 (例) saori.txtに「music,mciaudio.dll,static」 と書いて、トークに 「$saori[music,load,KOUMM00.MID]$saori[music,play]再生するよ。」 とかくと、音楽が再生されます。 さおりは、以下のページにリストがあります。ここからダウンロード可能。 http //members.jcom.home.ne.jp/umeici/saoricollect.html ・さおりの使用方法、追加 $saori[(なんとかかんとか)]を実行すると、このスクリプトは さおりから帰ってきた文字(Result)に置き換えられます。 他の文字(Value[n])は、{@value0}とか{@value1}とかで表示されます。 変数扱いなので、{a=@value0}と言う風にaに入れる事も出来ます。 【本家掲示板No.0001「YUHNA-SE Unit 1 補足」より】 基本的なコト
https://w.atwiki.jp/c-hawk/pages/34.html
TS2使用方法 起動 さぁ、ダウンロードしたTS2をつかってみましょう! まず、TeamSpeak2をダブルクリック そうしたら、このように出てきます ↓画像
https://w.atwiki.jp/amaeda/pages/16.html
複素1次元離散フーリエ変換 Complex One-Dimensional DFTs プランとは、偶然の結果を達成するための最善の方法をいろいろ思い悩むことである。 (Ambrose Bierce, The Enlarged Devil’s Dictionary.) FFTWで、サイズNのデータの一次元DFTを計算する方法はいたって簡単で、おおよそ以下のようなコードになります。 #include fftw3.h ... { fftw_complex *in, *out; fftw_plan p; ... in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE); ... fftw_execute(p); /* 必要なだけ繰り返す */ ... fftw_destroy_plan(p); fftw_free(in); fftw_free(out); } コンパイル時には、fftw3ライブラリをリンクしなければなりません。つまり例えばUnix系では -lfftw3 -lmをリンカオプションとしてつけます。 まず初めに、入出力の配列のメモリを確保します。 メモリは好きなように確保して構いませんが、fftw_mallocを使うことを推奨します。 fftw_mallocはmallocのように動作しますが、違いとしてはSSEやAltivecなどのSIMD命令が利用出きるように配列が確保されます。(3.1.1節 SIMD alignment and fftw mallocを参照) データはfftw_complex型の変数の配列になっており、fftw_complexはデフォルトでdouble二つ分の配列(double[2])です。それぞれ実部(in[i][0])、虚部(in[i][1])に対応します。 次のステップは、プランの生成です。プランはFFTWがFFTを計算する際に必要な全ての情報を含んだものです。以下の関数がプランを作ります。 fftw_plan fftw_plan_dft_1d(int n, fftw_complex *in, fftw_complex *out, int sign, unsigned flags); 最初の引数nは計算しようとしている変換のサイズです。nは任意の正の整数をとりえますが、サイズが小さい素数のみを因数に持つ場合、最も効率よく計算できます。(しかしどんな素数であれ,O(nlogn)アルゴリズムを採用しています) 計算時間の次元が、データ数nに対して、nlogn 次の二つの引数は、入出力の配列へのポインタです。これらのポインタは同じものを入れることも可能で、この場合は入力配列が書き換わります。 四番目の引数signは、正変換か逆変換かを表す、FFTW_FORWARD(-1)かFFTW_BACKWARD(+1)のどちらかを入れます。技術的にはこれは、変換の指数部になります。 最後の引数flagは、通常FFTW_MEASUREかFFTW_ESTIMATEをとります。FFTW_MEASUREは実際にいくつかのFFTWを実行して実行時間を計り、サイズnの変換を計算するのに一番良い方法を選択します。このプロセスは少し時間がかかり、(通常、2、3秒)これは変換のサイズnや計算機環境に依存します。FFTW_ESTIMATEは、実際に実行することなく、おそらく準最適だと思われる方法を選択します。 つまり、同じサイズの変換を複数回行い、かつ初期化の時間が重要でない場合はFFTW_MEASUREを使い、そうでなければFFTW_ESTIMATEを利用すれば良いことになります。 inやoutといった入出力データの配列は、FFTW_MEASUREのプランニングを行う際に上書きされるので、FFTW_MEWSUREでのプランニングを行う場合は、入力がユーザーに初期化される前にプランニングを行う必要があります。 一旦プランが生成されれば、特定のint/out配列に対して実際の変換をfftw_execute(plan)で計算する際に、プランは何度でも再利用できます。 ちなみにfftw_executeは, void fftw_execute(const fftw_plan plan); です。 もし、同じサイズの違う配列を変換したい場合は、fftw_plan_dft_1dを使って新しいプランを作れます。するとFFTWは、可能であれば、自動的に前回のプランの情報を再利用します。(一方で、グルインターフェースでは、既に生成済みのプランを他の配列に用いることができますが、十分気をつける必要があります。4章のFFTW Referenceを参照のこと) プランを用いて計算が終了したら、fftw_destroy_plan(plan)を呼び出すことによって、メモリを解放します。 void fftw_destroy_plan(fftw_plan plan); fftw_mallocで確保された配列は、通常のfreeでなく、fftw_freeで開放してください。(ましてや、deleteなどしてはいけません) 離散フーリエ変換DFTの結果は、配列outに順番に格納され、周波数がゼロの直流成分(DC)がout[0]に入ります。もし、入出力配列が異なる配列なら(in!=out)、入力配列は変更されません。 そうでなければ、入力の配列は変換によって上書きされます。 ユーザーはFFTWがノーマライズしていないDFTを計算することに注意する必要があります。このようにして、逆変換のあと正変換(または、正変換のあと逆変換)した場合、元の配列がn倍された結果が得られます。 DFTの定義については、4.7のWhat FFTW Really Computesを参照してください。 もし、gccなどの最近のC99スタンダードをサポートするCコンパイラが利用可能な場合、以下のように、complex.hをfftw3.hの前にインクルードすれば、fftw_complexは倍精度の複素数型になり、通常の演算で扱うことができます。 #include complex.h #include fftw3.h その他の場合では、FFTWはC99と互換性のある独自の型fftw_complexを定義します。4.1.1 Complex numbersも参照のこと(C++のテンプレートクラスも、型をキャストすることによって使えます) single(float)と、long-doubleの精度のバージョンもインストールされていて、それらを使うためには、fftw_というプレフィクスをfftw_fやfftwl_に置き換え、リンク時に -lfftw3fや -lfftw3lを用いてください。ヘッダーファイルは同じもの(fftw3.h)で構いません。 FFTW_MEASUREとFFTW_ESTIMATE以外にも多数のフラグがあります。例えば、FFTW_PATIENTは、プラン生成に相当程度長い時間がかかる代わりに、実に速くプランが実行できます(4章のFFTW Referenceを参照) プランを今後の為に保存することもできて、それについては3.3のWords of Wisdom-Saving Plansを参照してください。
https://w.atwiki.jp/magbeginner/pages/51.html
テキストチャットの使用方法 ゲーム中は裏でTCに入室し、指令が聞こえる状態にしておく必要があります。 この入室した状態で、ゲームをしていると、誰かが発言した場合、 右上にポップアップで発言が表示されます。 まず、クランへ加入すると同時に、TCへの招待が届きます。 「MAGさくせんかいぎしつ」という名前のTCなので、入室してみてください。 このテキストチャットへの入退出は、PSボタンを押す事で ゲーム中であっても操作が可能です。 MAG起動中は、PSボタンを押すと、テキストチャットの画面が出るような状態を保っておいてください。 求:スクリーンショット .
https://w.atwiki.jp/amaeda/pages/58.html
FFTWマニュアル - FFTWリファレンス - ベーシックインターフェース - 実データ離散フーリエ変換 実データ離散フーリエ変換 Real-Data DFTs fftw_plan fftw_plan_dft_r2c_1d( int n, double *in, fftw_complex *out, unsigned flags ); fftw_plan fftw_plan_dft_r2c_2d( int nx, int ny, double *in, fftw_complex *out, unsigned flags ); fftw_plan fftw_plan_dft_r2c_3d( int nx, int ny, int nz, double *in, fftw_complex *out, unsigned flags ); fftw_plan fftw_plan_dft_r2c( int rank, const int *n, double *in, fftw_complex *out, unsigned flags ); 実数入力/複素数出力の0次以上の離散フーリエ変換(DFT)のプランをたてて、fftw_planを返します(4.2節のプランの利用参照)。 いったんある変換タイプおよびパラメータのプランを生成すれば、異なる配列に対して、同じタイプおよびパラメータのプランを生成する際に、高速にプランが生成され、定数は共有されます(もし存在すれば)。 プランナーはプランが生成できなかったとき、返り値としてNULLを返します。そして、ベーシックインターフェースでは、FFTWをある制限された変換群をサポートする設定にカスタマイズするか、入出力が異なるout-of-placeのc2r多次元変換でFFTW_PRESERVE_INPUTフラグを使わない限り、返り値としてNULLでない値を返します。 引数 Arguments rank ランク(rank)は、変換の次元で(これは配列*nのサイズであるはずです)任意の非負整数を取りえます。 _1d 、 _2d 、 _3d のプランナーはそれぞれランク(rank)が1,2,3に対応します。ランク(rank)0は、サイズ1の変換、つまり入力から出力への数のコピーに相当します(ただし、0の虚部を伴います)。 nまたは、nx/ny/nzまたは、n[rank] nまたは、nx,ny,nzもしくは、n[rank]はそれぞれ変換の次元の論理的サイズを与え、任意の非負整数をとりえます。これは一般的に、物理的配列次元とはことなります。これについては4.3.4章の実データ離散フーリエ変換配列形式に記されています。 FFTWは配列サイズがの時に、一番性能が発揮され ます。ただし、e+fは、0か1で他の係数(a,b,c,d)は任意です。他のサイズの時は、一般的なアルゴリズムを用いた遅いアルゴリズムで計算されます(それでも遅くてもO(nlogn)の次元です)。FFTWを違うサイズ用にカスタマイズすることもできるので、必要なら8章のInstallation and Customizationを参照してください。2の階乗のサイズの変換はとりわけ高速に計算でき、それは一般的にr2c/c2r変換の最後の次元が偶数であるときに効果があるということになります。 in,out inとoutは変換の入力および出力の配列を表し、同じものを取りえます(in-place変換)。これらの配列は、FFTW_ESTIMATEフラグが使われない限り、プラン生成の際に値が上書きされます。(配列は初期化する必要はないが、確保する必要があります)。入出力が同じであるin-place変換の時は、実配列はパディングが必要です。これについては4.3.4章の実データ離散フーリエ変換配列様式に記されています。 flags flagはビットごとのORで構成されるゼロ以上のフラグです。24ページの4.3.2章のプランナーフラグで定義されます。 逆変換については、複素数の入力(エルミート配列の論理的に半分のサイズに非冗長に格納されているもの)をとり、実数を出力とする以下のようなものです。 fftw_plan fftw_plan_dft_c2r_1d( int n, fftw_complex *in, double *out, unsigned flags ); fftw_plan fftw_plan_dft_c2r_2d( int nx, int ny, fftw_complex *in, double *out, unsigned flags ); fftw_plan fftw_plan_dft_c2r_3d( int nx, int ny, int nz, fftw_complex *in, double *out, unsigned flags ); fftw_plan fftw_plan_dft_c2r( int rank, const int *n fftw_complex *in, double *out, unsigned flags ); 引数は、入出力のデータ形式が逆になっているところ以外はr2c変換と、まったく同じです。 FFTWの演算では規格化がされません。すなわち、c2r変換を行った後、r2c変換(またははその逆)を行うと、計算結果は元のデータを変換のサイズ倍(配列の論理的次元の積)されます。r2c変換は、同じ入力を用いて、複素離散フーリエ変換のでFFTW_FORWARDとした時と、同じ結果になり、c2r変換はFFTW_BACKWARDに対応します。より詳しい情報は、4.7章のWhat FFTW Really Computesを参照してください。
https://w.atwiki.jp/mirageserver/pages/33.html
このページではエレベーターpluginの使用方法をご説明いたします。 まず初めに必要最低限用意するものは以下のアイテムです。 鉄ブロック ガラスブロック スイッチ 看板 これらを使い、エレベーターを作ります。 図① 上記の図①を見てください。エレベーターの最下層となる部分に鉄ブロックを置き、スイッチや看板を設置します。 ※これだけでは稼働しません。 ※看板は何も書かずに貼り付けてください。 図② 次に図②のように、上の階層となる部分にガラスブロック、スイッチ、看板を設置します。 ※看板は何も書かずに貼り付けてください。 図①、図②のように設置できたら、素手で看板を右クリックしてください。 設置が成功していた場合、現在の階層と行き先階層が表示されます。 階層はいくらでも作れますし、土台の鉄ブロックは最大16ブロックまで増やせます。 カンタンにではありますが、以上になります。 わからないことなどはゲーム内にあるエレベーターを参考にするか、 管理人までご質問ください。
https://w.atwiki.jp/zeki/pages/15.html
遊び方 起動して最初に出てくる画面が、譜面データが入ったフォルダのリストが表示されます。私個人はグループフォルダと呼んでいます。ここでタップしたフォルダ内のデータを読み込みます。 グループフォルダを読み込んだら曲のリストが表示されます。難易度のパネル(習、楽、踊、激、鬼と書いてあるやつ)をタップするとパネルが明るくなるので、その状態でもう一度タップするとその難易度でプレイスタートします。 プレイ開始したら、画面下に白線で×が表示されます(オプションによって変化しますがそれは後述)。その白線を境にタップすることで上下左右を操作します。タップしたら対応する方向の矢印(画面上に固定されてるやつ)が小さく表示されます。下から来る矢印をタイミングよくタップすればOKです。 オプション設定 メニューボタン→Option を選択することでオプションの設定ができます(プレイ中などはメニューが開けません)。以下のオプションを設定できます。 Button Type 操作方法を指定します。というかタップする範囲が変わるだけです。 Type1…デフォルト。画面下に白線で×印が表示される。画面上のほうに判定はないので注意。 Type2…デフォルトだと範囲が広すぎてやりずらい人向け。Type1より範囲が狭い。 Type3…Type3よりもさらに範囲が狭い。範囲が狭いというとやりにくそうだが、指が邪魔で画面が見えないリスクが減る。 Type4…これはちょっと異色。タップ範囲を縦に割ってみた感じ。人によってはこれが一番やりやすいと思われる。 Offset オフセットを調整します。オフセットとは日本語で相殺するといった意味であり、ここでは曲のズレを調整する意味を持ちます。プレイしてみて矢印のタイミングがずれている、と感じたらここを調整してみましょう。 例えば矢印が50msくらい遅れてくると感じたら+50msにすると幸せになれます。逆に100msくらい早い場合は-100msにするといいです。 設定方法 Plus or Minus…符号を指定。+または-。+でタイミングが遅く、-でタイミングが早くなると覚えておくとよい。 Offset Value…オフセット値を指定。msでの入力なので注意(1秒=1000ms)。この欄の下に小さく書いてある値(+0msなど)が設定されたオフセット値になります。Plus or Minusと連動しています。 Speed Options DDRシリーズでもお馴染みのオプション。下から流れてくる矢印のスピードを倍速で指定します。デフォルトで1.0×。BPM(曲のテンポ)が早すぎor遅すぎってときにこれを調整するとやりやすくなります。また、超高速or超低速でプレイしたいときにも使えます。8.0×とか使う機会あるのだろうか。 Apperance Options 矢印の出現方法を指定します。 STANDARD…通常 HIDDEN…矢印が途中で消える SUDDEN…矢印が途中から現れる STEALTH…矢印が判定ゾーンを過ぎるまで見えない BLINK…矢印が一定間隔で出現・消滅を繰り返す R_VANISH…矢印が途中で消え、判定ゾーン直前に出現 Turn Options STANDARD…通常 MIRROR…譜面が反転する LEFT…譜面が左に1列ずつずれる RIGHT…譜面が右に1列ずつずれる SHUFFLE…譜面が列単位でランダムに配置される Hold Options フリーズアローの設定をします。 ON…フリーズアロー有り OFF…フリーズアロー無し 楽曲の追加 多くの人がよくわからんとぼやくであろう曲データの追加方法。本家StepManiaでもここでワカンネってなる人が多い。自分もなったけど。 まず追加したいデータを用意してください。一曲追加するのに最低mp3ファイル(音楽ファイル)とsmファイル(譜面ファイル)が必要です。データの入手方法は後述します。音楽ファイルはogg形式も対応しています。 追加するデータを以下のようなフォルダ構成で配置してください。フォルダやファイルを操作するには、PCにUSB接続してPCから操作するかファイル管理アプリを利用する必要があります。 /SDカードのルート(*1)/StapMania(*2)/グループフォルダ(*3)/曲フォルダ(*4)/mp3ファイル smファイル (*1)ここはほとんどの環境では/sdcardだが、環境によっては/mnt/sdcardだったり、/sdcard/external_sdだったりするので注意。 (*2)StapManiaフォルダを作成する。StepManiaではないので注意。これがない状態で起動すると自動作成されるので、曲を追加する前に一度起動しておけばパスの間違いを防げるはず。 (*3)StapManiaフォルダの直下にグループフォルダを作成する。グループフォルダを複数作成することで、曲データをジャンル別に分けたりして管理できる。この階層にsmファイルとか入れても意味がないので注意。フォルダ名は任意です。 (*4)smファイルとmp3ファイルの入ったフォルダを配置する。この階層にsmファイルとか入れても意味がないので注意。データを入れるのはこの階層のフォルダの直下です。この階層のフォルダの数=このグループフォルダに存在する曲データの数となります。フォルダ名は任意です。 (*5)mp3ファイルとsmファイルを配置します。ここに入れるのは一曲分のデータだけなので、複数のmp3ファイル、およびsmファイルを入れるとどれが読み込まれるのかわからなくなるので注意。ファイル名は任意です。 と文字だけで説明してみましたがわかりにくいかと思います。一度起動させてStapManiaフォルダが自動作成されるとサンプルデータ(ハジメテノオト)まで自動作成されますので、それらのフォルダ構成を参考にしてデータを追加してみてください。それでもよくわからん!という人はコメントかメールください。 楽曲の入手方法 StepManiaの曲データは世界中に星の数(は大げさだが)存在します。探してみれば自分の好きな曲のデータも見つかることでしょう。なければ自分で作ることもできます。 曲探しのコツですが、例として「欲しい曲名 DWI」で検索してみてください。DWIというのはsmファイルと同様の譜面ファイルの一種で、こちらで検索したほうが引っかかりやすいと思います。でもこのアプリではDWIファイルは読めませんので注意してください。といってもほとんどの場合、DWIと一緒にSMファイルも同梱されています。もしなかった場合は、本家StepManiaのエディットモードでセーブすることでsmファイルを自動作成できます。 背景・バナー StepMania同様、一曲ごとに背景とバナー画像を指定できます。ファイル形式はともにpng,bmp,jpg,gifに対応です。ファイル名は以下のようにしてください。 背景 ファイル名をsmファイルで指定する。またはファイル名にbg、またはbackを含ませる。 バナー ファイル名をsmファイルで指定する。またはファイル名にbn、またはbannerを含ませる。 背景は縦サイズを画面にあわせ、中央に表示します。バナーはアスペクト比を特定のものに合わせます。なので場合によってはゆがんだり解像度が悪かったりします。 これらの画像は必須でないのでなくても大丈夫です。 その他 このアプリ、結構重いです。処理落ちする場合は他のタスクを終了してから起動してみてください。アプリを終了させただけではタスクが残っていることもあるので、何かしらのタスク管理アプリを使用するといいかと思います。何やってもカクカクだったらスペック不足です。 とりあえず Android2.1以上 CPU動作速度1GHz以上 ならば大丈夫だと思います。たぶん。
https://w.atwiki.jp/csswiki/pages/15.html
CSSの指定方法 次にCSSの指定方法を説明します。 各要素の style属性 に指定することでCSSが適応する方法。 ※一番簡単で、かつわかりやすい。ただ、複数個所ある場合、逆に見ずらくなる。 p style="font-size 10pt" 文章 /p 指定したすべてのセレクタにcssを設定する。 head要素の中でCSSを宣言し、body要素の中で適応されるというものです。style要素を使用します。 このときCSSのタイプを指定しておく必要があります。 style要素の type属性 の属性値を text/css と指定しておきます。 ※この指定方法だけでは、body要素内のすべてのp要素にCSSが適応する。 !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" html head meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" title CSS /title style type="text/css" !-- p { font-size 10pt } -- /style /head body p この部分の文字サイズは10ポイントになります。 /p /body /html 個別に、かつ全体にcssを設定する場合1 セレクタを指定するときに #半角英数字の名前 でセレクタを指定するとidを宣言したことになります。 idを宣言し、今度はCSSを適応させたい要素の id属性 で宣言した名前を指定すると、その部分にだけCSSが適応されて便利です。 !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" html head meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" title /title style type="text/css" !-- #aaa { font-size 10pt } -- /style /head body p id="aaa" この部分の文字サイズは10ポイントになります。 /p /body /html 個別に、かつ全体にcssを設定する場合2 #の代わりに . で宣言し、各要素の class属性 で名前を指定することによって適応することができます。 !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" html head meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" title /title style type="text/css" !-- .aaa { font-size 10pt } -- /style /head body p class="aaa" この部分の文字サイズは10ポイントになります。 /p /body /html セレクタにはどの要素に対してCSSを適応するかを書いて、 {~} の中にプロパティと値を書きます。 プロパティ・値を複数指定したいときは、 ; (セミコロン)で区切って指定します。 p { font-size 12pt; color red }
https://w.atwiki.jp/amaeda/pages/33.html
/** * @brief test of fftw r2c transform * @author maeda * @date 2008/09/24 */ #include cv.h #include cxcore.h #include highgui.h #include "fftw3.h" #include "powerspectol.h" #pragma comment( lib, "cv.lib" ) #pragma comment( lib, "cxcore.lib" ) #pragma comment( lib, "highgui.lib" ) #pragma comment( lib, "fftw3.lib" ) int main( void ) { IplImage *img = NULL; IplImage *imgman = NULL; IplImage *show = NULL; IplImage *spectol = NULL; CvSize size; fftw_complex *out = NULL; fftw_plan plan = NULL; int width,height; int i,j; // (1) load image (unsigned char) img = cvLoadImage( "lena.bmp", CV_LOAD_IMAGE_GRAYSCALE ); if( !img ){ printf("no image.\n"); return false; } width = img- width; height = img- height; size = cvSize( width/2+1, height ); out = (fftw_complex*)fftw_malloc( sizeof(fftw_complex) * (width/2 + 1) * height ); spectol = cvCreateImage( size, IPL_DEPTH_64F, 1 ); show = cvCreateImage( size, IPL_DEPTH_8U, 1 ); imgman = cvCreateImage( cvSize( width, height ), IPL_DEPTH_64F, 1 ); if( !imgman || !out || !spectol || !show ){ printf("failed to allocate memory.\n"); return false; } // (2) convert image (unsigned char- double) cvScale( img, imgman ); plan = fftw_plan_dft_r2c_2d( height, width, (double*)imgman- imageData, out, FFTW_ESTIMATE ); if( !plan ){ printf("failed to create plan\n"); return false; } // (3) fft (double- fftw_complex) fftw_execute(plan); // (4) get powerspectol (fftw_complex- double) maGetPowerSpectol2D( out, (double*)spectol- imageData, width/2+1, height ); // (5) convert image (double- unsigned char) cvScale( spectol, show, 255 ); // (6) show result cvNamedWindow( "window" ); cvShowImage( "window", show ); cvWaitKey(0); cvDestroyWindow( "window" ); if( out ) fftw_free( out ); if( img ) cvReleaseImage( img ); if( imgman ) cvReleaseImage( imgman ); if( show ) cvReleaseImage( show ); if( spectol ) cvReleaseImage( spectol ); if( plan ) fftw_destroy_plan( plan ); return true; }